package com.qunar.wan.common_api.service;

import com.qunar.wan.common_api.model.User;
import com.qunar.wan.common_api.model.enums.Role;
import com.qunar.wan.common_api.service.mapper.UserMapper;
import com.qunar.wan.common_api.serializer.RowBounds;

import java.util.Date;
import java.util.List;

/**
 * User: tongjie.yang Date: 11/25/13 Time: 6:51 PM
 */
public interface UserService extends BaseService<User, UserMapper> {
    /**
     * 查询活动达人
     *
     * @return
     */
    List<User> selectStarUser(int num);

    /**
     * 根据用户角色查询
     */
    List<User> selectUserByRole(Role role);

    /**
     * 根据用户名查找用户
     */
    User selectUserByName(String userName);

    /**
     * 根据用户ID查找用户
     */
    User selectUserById(int userId);

    /**
     * 用户登录
     */
    User loginHandler(String userName);

    /**
     * 修改用户积分
     */
    void addUserScore(int userId, int score);

    /**
     * 修改用户角色
     */
    void updateUserRole(int userId, Role role);

    /**
     * 修改用户头像
     */
    void updateUserHeadImg(int userId, String headUrl);

    /**
     * 修改用户登录时间
     */
    void updateUserLoginTime(int userId, Date date);

    /**
     * 查询所有用户,分页
     *
     * @return
     */
    List<User> selectAllUser(RowBounds rowBounds);

    /**
     * 查询用户总数
     *
     * @return
     */
    int selectUserNum();

    /***
     * 返回当前登录的用户
     * 未登录返回null
     * @return
     */
    User currentLogonUser();

    /***
     * 清空Cookie
     */
    void emptyUserCookie();

    /***
     * 写入Cookie
     */
    void writeUserCookie(User user);

    String getIsFirst();

}
